package org.lyfeng.spring.aop;

import org.lyfeng.spring.beans.definitions.BeanDefinition;

public interface AspectRegister {
	/**
	 * 移除一个切面bean
	 * @param beanName
	 */
	void removeAspect(String beanName);
	/**
	 * 解决容器的依赖关系，注入所有的bean依赖
	 */
	void resolveAspect();
	/**
	 * 注册一个切面bean
	 * @param beanName
	 * @param clazz
	 */
	void registerAspect(String beanName, Class<?> clazz);
	/**
	 * 注册一个切面bean，名字默认
	 * @param clazz
	 */
	void registerAspect(Class<?> clazz);
	/**
	 * 注册bean definition
	 * @param beanDefinition
	 */
	void registerBeanDefinition(BeanDefinition beanDefinition);
	/**
	 * 给一个bean添加一个切面
	 * @param beanName
	 * @param obj
	 */
	void addAspectBean(String beanName,Object obj);
	/**
	 * 创建一个代理
	 * @param beanName
	 * @param proxyObject
	 */
	void registerProxyObject(String beanName,Object proxyObject);
}
